package com.itany.corejava.code13_jdbc;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年12月11日 15:05
 */
public class Test02_SQL注入 {
    private static final String JDBC_URL="jdbc:mysql://127.0.0.1:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
    public static void main(String[] args) {



        // select *
        // from t_user
        // where (username='aaa' or '1'='1') and (password='22' or   '1'='1');

        // List<User> list=login("tom","123456");


        //不管用户名和密码是否正确，验证都会通过
        List<User> list=login("1' or '1'='1 ","1' or '1'='1 ");
        System.out.println(list);
    }

    public static List<User> login(String username,String password){
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;
        List<User> users=new ArrayList<>();
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn=DriverManager.getConnection(JDBC_URL,"root","root");
            st=conn.createStatement();
            String sql="select id,username,password,phone,address from t_user where username='"+username+"' and  password='"+password+"'";
            rs=st.executeQuery(sql);
            while(rs.next()){
                User user=new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setPhone(rs.getString("phone"));
                user.setAddress(rs.getString("address"));
                users.add(user);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return users;
    }
}
